|
Information Processing Language(IPL)とは、1956年ごろからランド研究所およびカーネギー工科大学にてアレン・ニューウェル、クリフ・ショー、ハーバート・サイモンが開発したプログラミング言語。ニューウェルは言語仕様設計と同時にアプリケーションのプログラミングも行い、ショーはシステムプログラミング、サイモンはアプリケーションのプログラマとしてもユーザーとしても活動した。 一般問題解決のための各種プログラミング要素を備えている。例えば、リスト、連想(association)、スキーマ(フレーム)、動的メモリ確保、データ型、再帰呼び出し、連想探索(associative retrieval)、引数としての関数、ストリーム、協調型マルチタスク(ノンプリエンプティブ・マルチタスクのこと)などである。IPLはアセンブリ言語のスタイルだったが、リスト処理の概念を開拓した。 == 言語仕様 == IPLは次のような要素を持つ。 # シンボル群。全てのシンボルはアドレスおよび名前付きセルである。後の言語のシンボルとは異なり、シンボルは1文字とそれに続く番号で構成され、H1, A29, 9-7, 9-100 のように書かれる。 ## セル名が1つの英文字で始まる場合、''regional'' であり、絶対アドレスを表す。 ## セル名が "9-" で始まる場合、''local'' であり、単一のリスト内でのみ意味を持つ。あるリスト内の 9-1 は、別のリスト内の 9-1 とは別物である。 ## 他のシンボル(例えば番号のみ)は ''internal'' である。 # セル群。リストはそれぞれ相互に参照を持つ複数のセルで構築される。セルにはいくつかのフィールドがある。 ## P は3ビットのフィールドで、そのセルを命令として実行する際の命令コードとして使われる。セルがデータの場合は未使用である。 ## Q は3値のフィールドで、そのセルが命令として使われる場合は間接参照に使われ、セルがデータの場合は未使用である。 ## SYMB はそのセルの値として使われるシンボルである。 # プリミティブプロセス群。現代の言語ではプリミティブ関数と呼ばれるものである。 IPLの主要なデータ構造はリストだが、多くの言語でのリストよりも複雑な構造を持っている。リストは実行も可能な一連のリンクされたシンボルから成り、それに加えて ''description list'' と呼ばれる属性名と値が交互に並んだリストが付属する。IPLには属性名を指定して対応する値にアクセスしたり値を変更したりするプリミティブがある。description list には(9-1 のような形式の)ローカル名が与えられる。下表は、S4とS5というシンボルを持つL1というリストと、それに付属するA1という属性にV1という値が対応しA2という属性にV2という値が対応している9-1という description list を示している。LINKが0となっているのは、リストの終端を意味する。100や101といったセル名は自動的に生成された内部シンボルであり無意味である。これらのセルはメモリ上ばらばらに存在する。L1は唯一の regional なシンボルなので、特別な場所に置かれグローバルに参照可能である。
IPLはリストを操作できるアセンブリ言語である。特別な用途のレジスタとして使われるセルが存在する。例えばH1はプログラムカウンタである。H1のSYMBフィールドは現在の命令の名前となっている。しかし、H1はリストとして解釈される。H1のLINKフィールドは今風に言えばコールスタックのトップへのポインタである。例えば、サブルーチン呼び出しではH1のSYMBをそのスタックにプッシュする。 H2はフリーリストである。プロシージャがメモリを確保したい場合はH2からセルを獲得する。逆にプロシージャが完了したらメモリをH2に置く。関数に入る際、引数リストはH0にある。関数から抜ける際には結果をH0に置く。多くのプロシージャは成功か失敗かを示すブーリアン型の結果を返すが、それをH5に置く。W0-W9という10個のセルは一時格納場所としてどこからでも使える。それらのセルに値をセーブしリストアする際にはプロシージャは「道徳的に束縛されている」(CACMの論文での言葉)。 Pフィールドでは8種類の命令を表せる。サブルーチン呼び出し、SからH0へのプッシュ/ポップ、SにあるシンボルとSに付属しているリストの間でプッシュ/ポップ、Sへの値のコピー、条件分岐といった命令がある。ここで、Sは命令のターゲットを意味する。SはQ=0ならSUMBフィールドの値を意味し。Q=1ならSYMBに名前があるセル内のシンボル、Q=2ならSYMBに名前があるセル内のシンボルの示すセル内のシンボルを意味する。つまり、Qはセルの間接参照のレベルを示している。条件分岐以外の命令では、次に実行すべき命令はセルのLINKフィールドが示している。 IPLには約150の基本処理のライブラリがある。例えば次のような処理が実装されている。 * シンボル同士が等しいかどうかの判定 * リストの属性を探す、セットする、消去する。 * リスト内の次のシンボルを求める。リストにシンボルを挿入する。リスト全体の消去、コピー。 * 算術演算(シンボル名を対象とする)。 * シンボルの操作。例えばシンボルが整数を表しているか否かの判定、シンボルをローカルなものにするなど。 * I/O操作 * 関数型言語のイテレータやフィルターに相当する "generator" がある。例えば数値のリストに対して個々のセルについて二乗を計算して新たなリストを作るといったことができる。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Information Processing Language」の詳細全文を読む スポンサード リンク
|